package com.wei.czz.framework.blog.dao;

import com.wei.czz.framework.blog.entity.BlogStatsEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2022-03-01 10:04:45
 * className: BlogStatsDao 博客统计操作请求数据库交互接口
 * version: 1.0
 * description:
 */
public interface BlogStatsDao extends BaseMapper<BlogStatsEntity> {

    /**
     * 查询用户已发布博客的日/月/年统计数据
     * @param userId    用户id
     * @param type      统计类型[1-浏览数 2-点赞数 3-评论数]
     * @param valueType 数值类型[0-日 1-月 2-年]
     * @return 统计结果
     */
    Long getUserBlogStats(@Param("userId") Long userId, @Param("type") Integer type,
                          @Param("valueType") Integer valueType);

    /**
     * 根据博客id，增加博客统计的浏览次数
     * @param blogId 博客id
     * @param num    浏览次数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int incrementBlogViewNum(@Param("blogId") Long blogId, @Param("num") Integer num);

    /**
     * 根据博客id，增加博客统计的点赞数
     * @param blogId 博客id
     * @param num    点赞数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int incrementBlogLikeNum(@Param("blogId") Long blogId, @Param("num") Integer num);

    /**
     * 根据博客id，减少博客统计的日点赞数
     * @param blogId 博客id
     * @param num    点赞数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int decrementBlogDayLikeNum(@Param("blogId") Long blogId, @Param("num") int num);

    /**
     * 根据博客id，减少博客统计的月点赞数
     * @param blogId 博客id
     * @param num    点赞数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int decrementBlogMonthLikeNum(@Param("blogId") Long blogId, @Param("num") Integer num);

    /**
     * 根据博客id，减少博客统计的年点赞数
     * @param blogId 博客id
     * @param num    点赞数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int decrementBlogYearLikeNum(@Param("blogId") Long blogId, @Param("num") Integer num);

    /**
     * 根据博客id，增加博客统计的收藏数
     * @param blogId 博客id
     * @param num    点赞数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int incrementBlogCollectNum(@Param("blogId") Long blogId, @Param("num") Integer num);

    /**
     * 根据博客id，减少博客统计的日收藏数
     * @param blogId 博客id
     * @param num    收藏数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int decrementBlogDayCollectNum(@Param("blogId") Long blogId, @Param("num") Integer num);

    /**
     * 根据博客id，减少博客统计的月收藏数
     * @param blogId 博客id
     * @param num    收藏数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int decrementBlogMonthCollectNum(@Param("blogId") Long blogId, @Param("num") Integer num);

    /**
     * 根据博客id，减少博客统计的年收藏数
     * @param blogId 博客id
     * @param num    收藏数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int decrementBlogYearCollectNum(@Param("blogId") Long blogId, @Param("num") Integer num);

    /**
     * 根据博客id，增加博客统计的评论数
     * @param blogId 博客id
     * @param num    评论数变化数值
     * @return 更新结果[1-更新成功 0-更新失败]
     */
    int incrementBlogCommentNum(@Param("blogId") Long blogId, @Param("num") Integer num);

}
